package org.acme.oauth2.controller;

import io.quarkus.qute.Template;
import io.quarkus.qute.TemplateInstance;
import io.restassured.RestAssured;
import io.restassured.response.Response;
import org.acme.oauth2.client.TdfOauth2Client;
import org.eclipse.microprofile.config.inject.ConfigProperty;
import org.eclipse.microprofile.rest.client.inject.RestClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.inject.Inject;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.HashMap;
import java.util.Map;

/**
 * @author LiJian
 * @date 2021/6/15 10:54
 */

@Path("/login")
@Produces(MediaType.APPLICATION_JSON)
public class Oauth2ClientController {

    private static final Logger LOGGER = LoggerFactory.getLogger(Oauth2ClientController.class);

    @ConfigProperty(name="oauth2.server.token.url")
    String tokenUrl;
    @ConfigProperty(name="oauth2.server.token.client_id")
    String clientId;
    @ConfigProperty(name="oauth2.server.token.client_secret")
    String clientSecret;
    @ConfigProperty(name="oauth2.server.token.username")
    String username;
    @ConfigProperty(name="oauth2.server.token.password")
    String password;
    @ConfigProperty(name="oauth2.server.token.grant_type")
    String grantType;
    @ConfigProperty(name="oauth2.server.token.userInfoUrl")
    String userInfoUrl;


    @Inject
    Template login;

    @Inject
    @RestClient
    TdfOauth2Client oauth2Client;

//    @GET
//    @Path("/tokens")
//    @Produces(MediaType.TEXT_HTML)
//    public TemplateInstance get(@QueryParam("sss") String sss ){
//
//        sss=tokenUrl;
//        LOGGER.info("****tokenUrl is :****" +tokenUrl);
//        return login.data("clientId",sss);
//    }

//    @Path("/password")
//    @GET
//    @Produces(MediaType.APPLICATION_JSON)
//    public TemplateInstance getToken() {
//        //获取token
//        //Map集合设置请求参数
//        Map<String, String> setParams = new HashMap<String, String>();
//        setParams.put("client_id", clientId);
//        setParams.put("client_secret",clientSecret );
//        setParams.put("username", username);
//        setParams.put("password", password);
//        setParams.put("grant_type", grantType);
//        // Response response= RestAssured.given().params(setParams).when().post(tokenUrl);
//        Response response= RestAssured.given().post(tokenUrl);
//        LOGGER.info("****tokenUrl is :****" +tokenUrl+response.body().print());
//        String accessToken=response.body().jsonPath().getString("access_token");
//        LOGGER.info("****access_token is :****" +accessToken);
//
//        //携带token获取用户资源
//        Map<String, String> headers=new HashMap<String, String>();
//        headers.put("Accept", "application/json");
//        headers.put("Authorization", "Bearer "+accessToken);
//        Response response2 = RestAssured.given().headers(headers).post(userInfoUrl);
//
//        return login.data("clientId",response2.body().print());
//    }

}
